Registri hardware

In elettronica digitale, e specialmente nell'elaborazione digitale, un registro hardware memorizza dei bit di informazione, in modo tale che tutti i bit vengono scritti, o letti, simultaneamente. I registri hardware che risiedono all'interno di una CPU (Central Processing Unit) sono denominati registri di processore. A corredo, sono presenti dei segnali provenienti da una macchina a stati e diretti al registro, che controllano quando quest'ultimo può trasmettere informazioni verso altri registri, o accettare informazioni da essi. A volte queste macchine a stato dirigono le informazioni provenienti da un registro attraverso una trasformazione funzionale, come ad esempio una unità di somma, o Adder (elettronica), e poi verso un altro registro che memorizza il risultato.

Gli utilizzi tipici di un registro hardware comprendono la configurazione e l'inizializzazione di determinate funzionalità, memorie di buffer, ad esempio quelle della memoria video delle schede grafiche, dispositivi di ingresso/uscita (I/O) di vario tipo, e registrazione dello stato della macchina, come quando si verifica uno specifico evento nell'hardware.

La lettura di registri hardware residenti nelle unità periferiche, in generale tutti i componenti hardware esterni alla CPU, comportano che l'accesso viene eseguito attraverso una tecnica di indirizzamento memory-mapped I/O - I/O mappato su indirizzi di memoria - oppure Port-mapped I/O - I/O mappato su indirizzi riservati a porte I/O; l'accesso avviene con istruzioni di caricamento - load - oppure di memorizzazione - store - attivate dal processore.

I registri hardware sono indirizzati sfruttando i segnali generati dal processore, ma può accadere che non tutti i segnali vengono effettivamente usati. Inoltre l'accesso avviene secondo la dimensione in bit della word con cui lavora il processore, ma è possibile che solo una parte di questi bit abbia un effettivo significato.

I registri di segnalazione hanno la stessa interfaccia dei normali registri hardware, ma invece che memorizzare dati, essi fanno scattare un'azione ogni volta che essi vengono scritti (o, più raramente, letti).

I registri sono misurati di solito con il numero di bit che essi possono contenere, ad esempio "registri a 8 bit" oppure "registri a 16 bit". Questi registri possono essere implementati in una grande varietà di modi, tra cui banchi di registri, SRAM standard, singoli flip-flop, o infine memoria ad alta velocità residente nel core del processore.

Oltre ai registri che sono direttamente accessibili ai programmatori e che possono essere letti e scritti da software, molti chip hanno dei registri interni che sono usati per macchine a stato e pipeline interni.

Esistono software commerciali di progettazione, come ad esempio il Socrates Bitwise della Duolog Technologies[1], che semplificano e automatizzano la fase di specificazione dei registri memory-mapped e la generazione di codice per la produzione in silicio dell'hardware, del firmware, della verifica hardware, delle procedure di test e la documentazione.[2], [3], [4]

SPIRIT IP-XACT e DITA SIDSC XML definiscono formati standard XML per registri memory-mapped. [5], [6], [7]

A causa del fatto che i registri a sola lettura o a sola scrittura rendono il debug quasi impossibile[8][9], molti programmatori richiedono ai progettisti di hardware di assicurarsi che tutti i registri che sono scrivibili, siano anche leggibili. Comunque, ci sono casi in cui leggere certi tipi di registro è inutile. Per esempio un bit, contenuto in un registro di segnalazione, che attiva un impulso verso un hardware specializzato, verrà poi letto sempre con valore nullo.


From Wikipedia, the free encyclopedia · View on Wikipedia

Developed by Tubidy